package com.cn.hotel.service.impl;

import com.cn.hotel.dao.INavDao;
import com.cn.hotel.dao.Impl.NavImpl;
import com.cn.hotel.model.NavModel;
import com.cn.hotel.service.INavService;
import redis.clients.jedis.Jedis;

import java.util.ArrayList;
import java.util.List;

public class NavServiceImpl implements INavService {
    //查询得到结果 给页面赋值
    @Override
    public List<NavModel> findAll(NavModel navModel) {
        INavDao iNavDao = new NavImpl();
        return iNavDao.findAll(navModel);
    }

    //查询数据库总条数
    @Override
    public int getCount(NavModel navModel) {
        INavDao iNavDao = new NavImpl();
        return iNavDao.getCount(navModel);
    }

    //添加
    @Override
    public int add(NavModel navModel) {
        INavDao iNavDao = new NavImpl();
        int result = iNavDao.add(navModel);
        if (result == 1) {
            Jedis jedis = new Jedis();
            jedis.del("nav_href");
            jedis.del("nav_name");
        }
        return result;
    }

    /**
     * 通过id查询到所点击的导航信息  然后赋值到编辑页面
     *
     * @param aa
     * @return
     */
    @Override
    public NavModel findByid(Integer aa) {
        INavDao iNavDao = new NavImpl();
        return iNavDao.findById(aa);
    }

    //添加编辑修改后的内容
    @Override
    public int eidtNav(NavModel navModel) {
        INavDao iNavDao = new NavImpl();
        int result = iNavDao.editNav(navModel);
        if (result == 1) {
            Jedis jedis = new Jedis();
            jedis.del("nav_name");
            jedis.del("nav_href");
        }
        return result;
    }

    //删除
    @Override
    public int delete(Integer temp) {
        INavDao iNavDao = new NavImpl();
        int result = iNavDao.delete(temp);
        if (result == 1) {
            Jedis jedis = new Jedis();
            jedis.del("nav_name");
            jedis.del("nav_href");
        }
        return result;
    }

    /**
     * 下面部分前端页面调值代码实现-------------------------
     *
     * @return
     */
    //获取导航
    @Override
    public List<NavModel> getNavModelListFromIo() {
//        INavDao iNavDao = new NavImpl();
//        return iNavDao.getNavModelListFromIo();
        List<NavModel> list = new ArrayList<>();
        Jedis jedis = new Jedis();
//        NavModel navModel = new NavModel();
        INavDao iNavDao = new NavImpl();
        /**
         * jedis.Irange(key值,开始索引，结束索引) 根据key值---获取从某个索引开始到某个索引结束的值
         * jedis.lindex(key值，索引) 根据key值获取某个索引的值
         */
        if (jedis.exists("nav_name")) {
            List<String> nav_href = jedis.lrange("nav_href", 0, -1);
            List<String> nav_name = jedis.lrange("nav_name", 0, -1);
            for (int i = 0; i < nav_name.size(); i++) {
                NavModel model = new NavModel();
                model.setHref(nav_href.get(i));
                // model.setName(jedis.lindex("navName", i));
                model.setName(nav_name.get(i));
                list.add(model);
            }
        } else {
            list = iNavDao.getNavModelListFromIo();//从数据库查询获取值
            /**
             * 将数据库查询出来的值遍历存储到radis
             */
            for (int i = 0; i < list.size(); i++) {
                jedis.rpush("nav_href", list.get(i).getHref());
                jedis.rpush("nav_name", list.get(i).getName());
            }
        }
        return list;
    }

    /**
     * 加如radis缓存  List属性
     */


}
